package com.ruoyi.system.service;

import java.util.HashMap;
import java.util.List;
import com.ruoyi.system.domain.MdjfCaseMain;
import com.ruoyi.system.domain.vo.*;

/**
 * 矛盾纠纷--案件主事件Service接口
 * 
 * @author ruoyi
 * @date 2025-03-28
 */
public interface IMdjfCaseMainService 
{
    /**
     * 查询矛盾纠纷--案件主事件
     * 
     * @param caseMainId 矛盾纠纷--案件主事件主键
     * @return 矛盾纠纷--案件主事件
     */
    public MdjfCaseMain selectMdjfCaseMainByCaseMainId(Long caseMainId);

    /**
     * 查询矛盾纠纷--案件主事件列表
     * 
     * @param mdjfCaseMain 矛盾纠纷--案件主事件
     * @return 矛盾纠纷--案件主事件集合
     */
    public List<MdjfCaseMain> selectMdjfCaseMainList(MdjfCaseMain mdjfCaseMain);

    /**
     * 新增矛盾纠纷--案件主事件
     * 
     * @param mdjfCaseMain 矛盾纠纷--案件主事件
     * @return 结果
     */
    public int insertMdjfCaseMain(MdjfCaseMain mdjfCaseMain);

    /**
     * 修改矛盾纠纷--案件主事件
     * 
     * @param mdjfCaseMain 矛盾纠纷--案件主事件
     * @return 结果
     */
    public int updateMdjfCaseMain(MdjfCaseMain mdjfCaseMain);


    /**
     * 批量删除矛盾纠纷--案件主事件
     * 
     * @param caseMainIds 需要删除的矛盾纠纷--案件主事件主键集合
     * @return 结果
     */
    public int deleteMdjfCaseMainByCaseMainIds(Long[] caseMainIds);

    /**
     * 批量督办案件
     *
     * @param caseMainIds 需要删除的矛盾纠纷--案件主事件主键集合
     * @return 结果
     */
    public int supervisingIds(Long[] caseMainIds);

    /**
     * 删除矛盾纠纷--案件主事件信息
     * 
     * @param caseMainId 矛盾纠纷--案件主事件主键
     * @return 结果
     */
    public int deleteMdjfCaseMainByCaseMainId(Long caseMainId);

    /**
     * 案件  撤回受理
     * @param mdjfCaseMain
     * @return
     */
    public int withdraw(MdjfCaseMain mdjfCaseMain);


    /**
     * 案件  受理
     * @param mdjfCaseMain
     * @return
     */
    public int accept(MdjfCaseMain mdjfCaseMain);

    /**
     * 案件  处理  未完结/完结状态
     * @param mdjfCaseMain
     * @return
     */
    public int dispose(MdjfCaseMain mdjfCaseMain);

    /**
     * 案件  处理 回访状态
     * @param mdjfCaseMain
     * @return
     * @throws Exception
     */
    public int disposereturn(MdjfCaseMain mdjfCaseMain);

    public YearStatResult getYearStat(Integer targetYear);

    public DayStatResult getDayDeptStat(String day);

    public List<CaseHandlingResult> getCaseHandling(String day);

    /**
     * 近期趋势
     * @return
     */
    public ReRecentTrend recentTrend();



    /**
     * 处理分析
     * @return
     */
    public HashMap<String, String> handleAnalytics();

    /**
     * 近期案件诉求率
     * @return
     */
    public CasesGrowResult casesGrow();

    public CasesGrowResult casesDispose();

    public List<CasesRegionResult> casesRegion();
}
